HAProxy
=================================================

一：简介

1.1：负载均衡器
    tcp mode：四层调度，模拟实现，依然要基于socket进行
    http mode：七层调度

1.2：评估负载均衡器的性能
        会话率
        会话并发能力
        数据处理速度


二：安装
    ~]# yum -y install haproxy

三：配置

3.1：配置
    global：
        进程及安全配置相关的参数
        性能调整相关的参数
        Debug参数
    proxies：
        defaults
        listen
        frontend
        backend

proxies：
    http://172.18.21.70:9001/haproxyadmin?stats

    ~]# vi haproxy.cfg

    listen web *:80
            balance roundrobin
            server srv1 172.18.21.30 check
            server srv2 172.18.21.72 check

    listen stats *:9001
            stats enable
            stats uri /haproxyadmin?stats
            stats realm HAProxy\ Statistics
            stats auth admin:magedu
            stats admin if TRUE

globs 配置参数
    haproxy进程相关属性定义，且多数与haproxy所运行的os相关。

    log：定义全局的syslog服务器，最多可以定义两个，用于将haproxy产生的日志发往此服务器存储
        log address facility level 

    ngproc number：指明要启动的haproxy进程的数量。（默认为1）
    pidfile
    ulimit -n number：单个haproxy进程所能够打开的最大文件数。（haproxy自动计算）

~]# vi /etc/rsyslog.conf
local2*


性能调整：
    maxconn：单个haproxy进程最大并发数。
    maxpipes：maxconn/4：haproxy使用pipe机制实现tcp报文重组，每个进程所能够使用的最大pipe数量。

    nosplice：禁用内核级tcp报文重组功能

    spread-checks 0-50：百分比

    tune.bufsize；缓冲区
    turn.cksize：缓冲区大小
    tune.rcvbuf.client
    tune.rsndbuf.client
    tune.rcvbuf.server
    tune.sndbuf.server

    debug相关参数
        debug
        quiet


代理相关参数：
    分四段：
        defaults：用于为所有的 listen/frontend/backend 提供的默认值
        frontend <name>：定义监听的套接字，用于接收客户端请求并建立连接。
        backend <name>：定义后端服务器组。用于处理 frontend 转发的用户请求
        listen <name>：通过关联 “前端” 和 “后端” 定义一个完整的proxy server

    bind：

    balance：
        roundrobin：动态算法，支持权重的运行时调整及慢启动机制。最大支持4095个后台主机
        static-rr：静态算法，不支持权重的运行时调整与慢启动机制，最大主机数无上限

        leastconn：推荐使用在较长时间的会话场景中。例如，LDAP,MYSQL等协议。
        first：根据服务器在列表中的位置，自上而下进行调度，前面的服务器达到上限，再调度至下一台服务器。
                使用会会话较长的连接

        source：原地址 hash
        hash：hash-type

        url_param：
        hdr：

server：
    name
    address
    port：端口映射，省略是与 bind 的端口相同
    param*；
        backup：设定为备用服务器。
        ca-file <cafile>：
        check：对后端服务器进行健康状态监测，无check表示假设后端服务器适中可用，同时可使用辅助的参数。
            网络层 传输层 应用层
            addr：通过此地址进行健康状态监测。
        cookie <value> ：为当前的server指定cookie值。用于实现基于cookie会话黏性。
        maxconn <maxconn>：当前服务支持的醉的并发连接数，超出
        observe：基于流量做健康状态判断。默认禁用。
        redir：重定向
        weight：权重



    option httpchk
    option httpchk <uri>
    option httpchk <method> <uri>
    option htpchk <method> <uri> <version>

    maxconn
    mode（tcp | http | health）
        tcp：默认tcp
        http：
        health：


    cookie：


    acl <aclname> <criterion> [flags] [operator] <value> ...

        criterion：
            dst ip
            dst_port PORT
            src ip
            src_port PORT
            
            7层：
                










































=======================================
红黑树
弹性二叉树